import WebIM from './WebIM';
import {
  message
} from "antd";

/////////////////////////////// 发送文本 /////////////////////////////
export const sendMessage = (message, to, chatType = 'singleChat') => {
  return new Promise((resolve) => {
    let option = {
      type: "txt",
      msg: message,
      to,
      chatType
    };
    console.log('option', option);
    let msg = WebIM.message.create(option);
    WebIM.conn.send(msg).then((res) => {
      resolve(res.message)
    }).catch((e) => {
      console.log(e);
      resolve('fail')
    });
  })
}

// 发送图片

export const sendPrivateImg = (url, to, chatType) => {
  return new Promise(resolve => {
    const option = {
      chatType,
      // 消息类型。
      type: "img",
      // 图片文件的 URL 地址。
      url,
      // 消息接收方：单聊为对方用户 ID，群聊和聊天室分别为群组 ID 和聊天室 ID。
      to,
    };
    // 创建一条图片消息。
    const msg = WebIM.message.create(option);
    //  调用 `send` 方法发送该图片消息。
    WebIM.conn.send(msg).then((res) => {
      resolve(res.message)
    }).catch((e) => {
      console.log(e);
      resolve('fail')
    });
  })
}

// 发送文件
export const sendPrivateFile = (file, to, chatType) => {
  return new Promise(resolve => {
    console.log('file', file);
    let notAllowType = [
      "image/jpg",
      "image/gif",
      "image/png",
      "image/jpeg"
    ];
    const ft = file.type.toLowerCase();
    if (!notAllowType.includes(ft)) {
      const option = {
        // 消息类型。
        type: "file",
        file: file,
        // 消息接收方：单聊为对方用户 ID，群聊和聊天室分别为群组 ID 和聊天室 ID。
        to,
        // 会话类型：单聊、群聊和聊天室分别为 `singleChat`、`groupChat` 和 `chatRoom`。
        chatType,
        // 文件上传失败。
        onFileUploadError: function () {
          console.log("onFileUploadError");
        },
        // 文件上传进度。
        onFileUploadProgress: function (e) {
          console.log(e);
        },
        // 文件上传成功。
        onFileUploadComplete: function () {
          console.log("onFileUploadComplete");
        },
        ext: {},
      };
      // 创建一条文件消息。
      const msg = WebIM.message.create(option);
      // 调用 `send` 方法发送该文件消息。
      WebIM.conn
        .send(msg)
        .then((res) => {
          // 文件消息成功发送。
          resolve(res);
          console.log("Success");
        })
        .catch((e) => {
          // 文件消息发送失败。
          console.log("Fail");
        });
    }

  })
}

///////////////////////////// 获取用户列表 /////////////////////////////

export const getMessageUserList = () => {
  return new Promise((resolve) => {
    WebIM.conn.getServerConversations({
        pageSize: 50,
        cursor: ''
      })
      .then((res) => {
        resolve(res)
      })
  })
}


export const getMessageList = (targetId, chatType = 'chatType') => {
  return new Promise((resolve) => {
    const options = {
      // 对方的用户 ID 或者群组 ID 或聊天室 ID。
      targetId,
      // 每页期望获取的消息条数。取值范围为 [1,50]，默认值为 20。
      pageSize: 50,
      // 查询的起始消息 ID。若该参数设置为 `-1`、`null` 或空字符串，从最新消息开始。
      cursor: -1,
      // 会话类型：（默认） `singleChat`：单聊；`groupChat`：群聊。
      chatType,
      // 消息搜索方向：（默认）`up`：按服务器收到消息的时间的逆序获取；`down`：按服务器收到消息的时间的正序获取。
      searchDirection: "up",
    };
    WebIM.conn
      .getHistoryMessages(options)
      .then((res) => {
        // 成功获取历史消息。
        resolve(res)
      })
      .catch(() => {
        // 获取失败。
      });
  })
}

///////////////////////////// 清空 /////////////////////////////
export const clearAllMessage = () => {
  return new Promise(() => {
    WebIM.conn.deleteAllMessagesAndConversations().then(() => {
      // 清除全部会话和消息记录成功
      message.success('清除成功');
      localStorage.removeItem('ADD_MESSAGE');
      localStorage.removeItem('otherUserInfo');
      window.location.reload();
    })
  })
}

export const clearMark = (conversationId, conversationType = 'singleChat') => {
  return new Promise((resolve) => {
    const options = {
      conversations: [
        {conversationId, conversationType},
      ],
      mark: 0,
    }
    
    WebIM.conn.removeConversationMark(options).then(() => {
      resolve('success');
    })
  })
}

